S3の双方向レプリケーション設定時に、同一のオブジェクト名で上書きすると、レプリケーション先のリージョンのオブジェクトはどうなりますか?

S3の双方向レプリケーション設定時に、同一のオブジェクト名で上書きすると、レプリケーション先のリージョンのオブジェクトはどうなりますか?

レプリケーション元のオブジェクトを同一のオブジェクト名で上書きすると、新しいバージョンのオブジェクトが生成されます。その後、レプリケーション先のリージョンでは、レプリケーション元で上書きしたオブジェクトと同内容の新しいバージョンのオブジェクトが生成されます。バージョニングによって古いオブジェクトは保持されます。無限ループは発生しません。
Clock Icon2023.11.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていること

S3バケットの双方向レプリケーションを設定しています。

お互いのバケットはそれぞれ異なるリージョン(A, B)に存在しています。

リージョン A に既にオブジェクト名: X が存在している状態で、リージョン B にオブジェクト名: X を保存した場合、どのような挙動になりますか?無限ループになりませんか?

どう対応すればいいの?

リージョン A に既にオブジェクト名: X が存在している状態で、リージョン B にオブジェクト名: X を保存した場合、リージョン A のオブジェクト名: X の最新バージョンは、リージョン B のオブジェクト名: X に置き換わります。

なお、S3 バケットはバージョニングが有効になっているため、古いバージョンのオブジェクトは削除されずに保持されます。

無限ループは発生しません。

やってみた

参考資料[2]を元に東京リージョンと大阪リージョンに双方向レプリケーションを設定した S3 バケットを作成します。

東京リージョンの S3 に下記 aaa.txt を下記の内容で配置します。

aaa.txt
ap-northeast-1

しばらく待つと、大阪リージョンの S3 に aaa.txt がレプリケーションされました。

内容も、aaa.txt と同じ内容になっていますね。

では、大阪リージョンの S3 に下記内容の aaa.txt を保存します。

aaa.txt
ap-northeast-3

しばらく待つと、東京リージョンの S3 に aaa.txt の最新バージョンが発生しており、旧バージョンも内容が残っています。

内容も、大阪リージョンに保存した内容と同じになっていることを確認しました。

参考資料

[1]双方向レプリケーションを使用する場合 - オブジェクトのレプリケーション - Amazon Simple Storage Service

[2]S3の双方向レプリケーションを試してみた | DevelopersIO

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.